# -*- mode: org; fill-column: 80; -*-
#+TITLE: To do list
#+AUTHOR: Zelphir Kaltstahl
#+EMAIL: zelphirkaltstahl@posteo.de
#+STARTUP: content indent align inlineimages hideblocks entitiesplain nologdone nologreschedule nologredeadline nologrefile
#+TODO: TODO WIP DEPRECATED | DONE
#+DATE: <2021-04-17 Sa>
#+KEYWORDS: website web development todo
#+LANGUAGE: English
#+PRIORITIES: A E E
#+EXCLUDE_TAGS: noexport
#+OPTIONS: ^:{}
#+OPTIONS: H:10
#+OPTIONS: toc:2
#+OPTIONS: tags:nil
#+OPTIONS: tasks:t
#+OPTIONS: H:6
#+OPTIONS: p:nil
#+OPTIONS: pri:nil
#+OPTIONS: prop:nil
#+OPTIONS: todo:t
#+OPTIONS: stat:nil
#+OPTIONS: |:t
#+OPTIONS: inline:nil
#+OPTIONS: date:t

This document keeps track of things, which still need to be taken care of.

* To do [0/13]

- [ ] Currently the implementation uses bytevector procedures to read static
  files and create responses with their content. Probably Guile's ~sendfile~
  (see [[https://www.gnu.org/software/guile/manual/html_node/File-System.html][File-System]] in the Guile manual) is a more performant way of serving
  static files.

- [ ] Keyboard interrupt (C-c) are not yet handled in a way that cleanly shuts
  down the server.

- [ ] The various modules use different module systems. They should only use one
  module system.

- [ ] Use exception handling instead of asking whether a file exists and then
  continuing to read the file without exception handling.

  - Reason: There is a chance that a file could be deleted immediately after an
    existence check and before the rest of the logic that depends on the file
    existing is executed.

- [ ] No need to check, whether a path has any special parts in it, because the
  file procedures of Guile do not interpret them in any special way as Bash
  would do anyway. Only need to make sure, that a path is a subpath of the
  static directory.

- [ ] Check out
  https://hg.sr.ht/~arnebab/wispserve/browse/wispserve/serve.w
  which deals with reading big files. It might be that simply reading whole
  files as bytevectors (unbuffered) will run into problems when reading huge
  files. Also: What about using ~sendfile~ instead?

- [ ] static location is not recognized as such (see logs when running).

- [ ] serve images correctly. perhaps [[https://stackoverflow.com/questions/20247795/correct-http-headers-for-images][this]] helps?

- [ ] XML pretty formatting / indentation before sending

  Could try using xmllint command line tool from inside GNU Guile as follows:

  #+begin_src scheme
  (define (open-xmllint-pipe filename)
    (open-output-pipe
     (string-append "xmllint --format --output " filename " -")))
  #+end_src

- [ ] properly serve image files

  Apparently the encoding needs to be not utf-8, but instead =ISO-8859-1=. It
  seems this is for the usual encoding for binary data.

  See: [[https://hg.sr.ht/~arnebab/wispserve/browse/wispserve/serve.w?rev=ab4c95b7a9ff#L476]] and [[https://hg.sr.ht/~arnebab/wispserve/browse/wispserve/serve.w?rev=ab4c95b7a9ff#L455]]

- [ ] does ice-9 pretty-print help with formatting XML strings?

- [ ] agb

  - [ ] linked content keine haftung

- [ ] impressum
